package com.wenx.v3system.modular.cloud.domain.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Map;

/**
 * 权限验证上下文DTO
 * 
 * <p>支持前端PermissionGuard的权限验证上下文传递</p>
 * <p>兼容ABAC权限验证的各种场景</p>
 * 
 * @author wenx
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class PermissionContextDto implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    private Long userId;

    /**
     * 权限代码
     */
    private String permission;

    /**
     * 租户ID
     */
    private Long tenantId;

    /**
     * 资源ID
     */
    private String resourceId;

    /**
     * 资源类型
     */
    private String resourceType;

    /**
     * 操作类型
     */
    private String action;

    /**
     * 资源数据
     */
    private Map<String, Object> resourceData;

    /**
     * 用户上下文
     */
    private Map<String, Object> userContext;

    /**
     * 环境上下文
     */
    private Map<String, Object> environmentContext;

    /**
     * 操作上下文
     */
    private Map<String, Object> operationContext;

    /**
     * 是否可缓存
     */
    private Boolean cacheable;

    /**
     * 部门ID
     */
    private Long departmentId;

    /**
     * 团队ID
     */
    private Long teamId;

    /**
     * IP地址
     */
    private String ipAddress;

    /**
     * 用户代理
     */
    private String userAgent;

    /**
     * 请求时间
     */
    private Long requestTime;
} 